<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 请求1:
      // let isResult1 = false;
      // let isResult2 = false;
      // $ajax({
      //   url: "",
      //   success: function () {
      //     console.log("结果1");
      //     isResult1 = true;
      //     handleResult();
      //   },
      // });

      // 结果2:
      // $ajax({
      //   url: "",
      //   success: function () {
      //     console.log("结果2");
      //     isResult2 = true;
      //     handleResult();
      //   },
      // });

      // function handleResult() {
      //   if (isResult1 && isResult2) {
      //     //
      //   }
      // }

      //wrapped into
      // 网络请求： aaa -> 自己处理(10行)
      // 处理： aaa111 -> 自己处理(10行)
      // 处理： aaa1112222 -> 自己处理
      // new Promise((resolve, reject) => {
      //   setTimeout(() => {
      //     resolve("aaa");
      //   }, 1000);
      // })
      //   .then(() => {
      //     // 1. 自己处理10行代码
      //     console.log(res, "第一层的10行处理代码");

      //     // 2. 对结果进行第一次的处理
      //     return new Promise((resove) => {
      //       resolve(res + "111");
      //     });
      //   })
      //   .then((res) => {
      //     console.log(res, "第二层的10行处理代码");

      //     return new Promise((resolve) => {
      //       resolve(res + "222");
      //     }).then((res) => {
      //       console.log(res, "第三层的10行处理代码");
      //     });
      //   });

      // new Promise(resolve => resolve(结果))简写
      // new Promise((resolve, reject) => {
      //   setTimeout(() => {
      //     resolve("aaa");
      //   }, 1000);
      // })
      //   .then((res) => {
      //     // 1. 自己处理10行代码
      //     console.log(res, "第一层的10行处理代码");

      //     // 2. 对结果进行第一次的处理
      //     return Promise.resolve(res + "111");
      //   })
      //   .then((res) => {
      //     console.log(res, "第二层的10行处理代码");

      //     return Promise.resolve(res + "222");
      //   })
      //   .then((res) => {
      //     console.log(res, "第三层的10行处理代码");
      //   });

      // 省略掉promise,resolve
      // new Promise((resolve, reject) => {
      //   setTimeout(() => {
      //     resolve("aaa");
      //   }, 1000);
      // })
      //   .then((res) => {
      //     // 1. 自己处理10行代码
      //     console.log(res, "第一层的10行处理代码");

      //     // 2. 对结果进行第一次的处理
      //     return res + "111";
      //   })
      //   .then((res) => {
      //     console.log(res, "第二层的10行处理代码");

      //     return res + "222";
      //   })
      //   .then((res) => {
      //     console.log(res, "第三层的10行处理代码");
      //   });

      // reject
      new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve("aaa");
        }, 1000);
      })
        .then((res) => {
          // 1. 自己处理10行代码
          console.log(res, "第一层的10行处理代码");

          // 2. 对结果进行第一次的处理
          // return Promise.reject("error message");
          throw "error message"; // 手动抛出
        })
        .then((res) => {
          console.log(res, "第二层的10行处理代码");

          return Promise.resolve(res + "222");
        })
        .then((res) => {
          console.log(res, "第三层的10行处理代码");
        })
        .catch((err) => {
          console.log(err);
        });
    </script>
  </body>
</html>
